今天這篇我們將製作一個簡單而實用的體重BMI計算器,運用我們前面文章中提到的多種元件來實現這個應用。首先,我們需要了解BMI的計算方式:
BMI 的公式為:
BMI = 體重(公斤) ÷ 身高(公尺)的平方
這個公式能夠幫助我們快速估算出一個人的體重是否健康。BMI的結果通常可以分為以下幾類:
過輕:BMI < 18.5
正常:18.5 ≤ BMI < 24
過重:24 ≤ BMI < 27
肥胖:BMI ≥ 27
接下來,我們將使用前面學習的布局元件來設計這個計算器。我們會用到 EditText 來讓用戶輸入體重與身高,Button 來執行計算操作,最後用 TextView 來顯示計算結果。此外,還可以搭配 Spinner 來選擇身高單位(公尺或公分),使計算更加靈活。
這樣一個簡單的BMI計算器不僅能夠幫助用戶了解自己的健康狀況,還可以為我們繼續學習Android開發提供良好的基礎。
製作一個簡單的BMI計算器
.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
android:text="計算結果"
app:layout_constraintBottom_toTopOf="@+id/guideline3"
app:layout_constraintEnd_toStartOf="@+id/guideline2"
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toTopOf="@+id/guideline4" />
<EditText
android:id="@+id/editTextText3"
android:layout_width="0dp"
android:layout_height="0dp"
android:ems="10"
android:inputType="text"
android:hint="身高"
app:layout_constraintBottom_toTopOf="@+id/guideline8"
app:layout_constraintEnd_toStartOf="@+id/guideline6"
app:layout_constraintStart_toStartOf="@+id/guideline5"
app:layout_constraintTop_toTopOf="@+id/guideline7"
<EditText
android:id="@+id/editTextText2"
android:layout_width="0dp"
android:layout_height="0dp"
android:ems="10"
android:hint="體重"
android:inputType="text"
app:layout_constraintBottom_toTopOf="@+id/guideline11"
app:layout_constraintEnd_toStartOf="@+id/guideline6"
app:layout_constraintStart_toStartOf="@+id/guideline5"
app:layout_constraintTop_toTopOf="@+id/guideline10" />
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="計算"
app:layout_constraintBottom_toTopOf="@+id/guideline15"
app:layout_constraintEnd_toStartOf="@+id/guideline13"
app:layout_constraintStart_toStartOf="@+id/guideline12"
app:layout_constraintTop_toTopOf="@+id/guideline14" />
</androidx.constraintlayout.widget.ConstraintLayout>
.Java
public class MainActivity extends AppCompatActivity {
private TextView resultTv;
private EditText heightEt,weightEt;
private Button calculateBtn;
private double bmi;
/*先宣告你要使用的元件*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
/*綁定元件*/
resultTv = findViewById(R.id.main_result_tv);
heightEt = findViewById(R.id.main_height_et);
weightEt = findViewById(R.id.main_weight_et);
calculateBtn = findViewById(R.id.main_calculate_btn);
/*新增點擊事件*/
calculateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
float h = Float.parseFloat(heightEt.getText().toString());
float w = Float.parseFloat(weightEt.getText().toString());
bmi = w / (Math.pow(h / 100, 2));
String formattedBMI = String.format("%.2f",bmi);
resultTv.setText(formattedBMI);
}
});
}
}
成品:
參考資料:https://www.health.taichung.gov.tw/2509503/post